package com.dengdai.applibrary.view.custom;

import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.dengdai.applibrary.R;
import com.dengdai.applibrary.base.BaseView;
import com.dengdai.applibrary.config.BaseViewInfo;
import com.dengdai.applibrary.network.NetWork;

/**
 * @说明 数据加载界面
 * @作者 LY
 * @时间 15/12/15 14:03
 * @版权 Copyright(c) 2015 LY-版权所有
 */
public class LoadDataEemptyView extends FrameLayout {
    private Context context;
    private LinearLayout ll_load_data;
    private LinearLayout ll_net_work;
    private LinearLayout ll_load_error;
    private TextView tv_load_data;
    private ImageView iv_net_work;
    private TextView tv_set_net_work;
    private ImageView iv_load_error;
    private TextView tv_load_error;

    public LoadDataEemptyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
        initView();
    }

    /**
     * 初始化界面
     */
    private void initView() {
        View view = LayoutInflater.from(context).inflate(BaseView.gainResId(context, BaseView.LAYOUT, BaseViewInfo.LOAD_VIEW), null);
        ll_load_data = (LinearLayout) view.findViewById(R.id.ll_load_data);
        ll_net_work = (LinearLayout) view.findViewById(R.id.ll_net_work);
        ll_load_error = (LinearLayout) view.findViewById(R.id.ll_load_error);
        tv_load_data = (TextView) view.findViewById(R.id.tv_load_data);
        iv_net_work = (ImageView) view.findViewById(R.id.iv_net_work);
        tv_set_net_work = (TextView) view.findViewById(R.id.tv_set_net_work);
        iv_load_error = (ImageView) view.findViewById(R.id.iv_load_error);
        tv_load_error = (TextView) view.findViewById(R.id.tv_load_error);
        addView(view);

        ll_load_error.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (loadDataListener != null) {
                    loadDataListener.load();
                }
            }
        });

        ll_net_work.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (loadDataListener != null) {
                    if (NetWork.getNetworkStatus(context)) {
                        loadDataListener.load();
                    } else {
                        loadDataListener.netWork();
                    }
                }
            }
        });
    }

    /**
     * 加载数据中
     */
    public void loadData() {
        ll_load_data.setVisibility(VISIBLE);
        ll_net_work.setVisibility(GONE);
        ll_load_error.setVisibility(GONE);
    }

    /**
     * 设置网络
     */
    public void netWorkError() {
        ll_load_data.setVisibility(GONE);
        ll_net_work.setVisibility(VISIBLE);
        ll_load_error.setVisibility(GONE);
    }

    /**
     * 数据加载失败
     */
    public void loadDataError() {
        ll_load_data.setVisibility(GONE);
        ll_net_work.setVisibility(GONE);
        ll_load_error.setVisibility(VISIBLE);
    }

    /**
     * 设置加载数据中文字信息
     *
     * @param resId 加载数据中文字信息
     */
    public void setLoadDataInfo(int resId) {
        setLoadDataInfo(getResources().getString(resId));
    }

    /**
     * 设置加载数据中信息
     *
     * @param info 加载信息
     */
    public void setLoadDataInfo(String info) {
        tv_load_data.setText(info);
    }

    /**
     * 设置网络加载信息
     *
     * @param resId 图片资源
     * @param info  文字信息
     */
    public void setNetWordInfo(int resId, int info) {
        setNetWordInfo(resId, getResources().getString(info));
    }

    /**
     * 设置网络加载信息
     *
     * @param resId 图片资源
     * @param info  文字信息
     */
    public void setNetWordInfo(int resId, String info) {
        if (resId > 0) {
            iv_net_work.setImageResource(resId);
        }
        if (!TextUtils.isEmpty(info)) {
            tv_set_net_work.setText(info);
        }
    }

    /**
     * 设置网络图片信息
     *
     * @param resId 网络图片
     */
    public void setNetWordResId(int resId) {
        setNetWordInfo(resId, null);
    }

    /**
     * 设置网络信息信息
     *
     * @param info 网络信息
     */
    public void setNetWordInfo(int info) {
        setNetWordInfo(0, getResources().getString(info));
    }

    /**
     * 设置加载错误信息
     *
     * @param resId 图片资源
     * @param info  错误信息
     */
    public void setLoadDataErrorInfo(int resId, int info) {
        setLoadDataErrorInfo(resId, info);
    }

    /**
     * 设置加载错误信息
     *
     * @param resId 图片资源
     * @param info  错误信息
     */
    public void setLoadDataErrorInfo(int resId, String info) {
        if (resId > 0)
            iv_load_error.setImageResource(resId);
        if (!TextUtils.isEmpty(info))
            tv_load_error.setText(info);
    }

    /**
     * 设置加载错误信息
     *
     * @param resId 图片资源
     */
    public void setLoadDataErrorResId(int resId) {
        setLoadDataErrorInfo(resId, null);
    }

    /**
     * 设置加载错误信息
     *
     * @param info 信息
     */
    public void setLoadDataErrorInfo(String info) {
        setLoadDataErrorInfo(0, info);
    }

    public interface LoadDataListener {
        void load();

        void netWork();
    }

    public LoadDataListener loadDataListener;

    public void setOnLoadDataListener(LoadDataListener loadDataListener) {
        this.loadDataListener = loadDataListener;
    }
}